﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;

using System.Text;
using _4.Modelado.Inventario;

namespace _3.Datos.Inventario
{
    public class Ajuste_ExistenciaBD
    {
        /// <summary>
        /// Este método inserta y modifica una área
        /// </summary>
        /// <param name="comando">sentencia SQL</param>
        /// <param name="obj">Contiene las variable de Bodega</param>
        public void Ajuste_ExistenciaGuardar(SqlCommand comando, Ajuste_Existencia obj)
        {
            try
            {
                string sp = "usp_Ajuste_ExistenciaGuardar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_Ajuste_Existencia", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Usuario", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@AjusteAplicado", SqlDbType.Char));
                comando.Parameters.Add(new SqlParameter("@AjusteObservacion", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@AjusteSumar_Inventario", SqlDbType.Char));
 
                comando.Parameters[0].Value = obj.iPK_Ajuste_Existencia;
                comando.Parameters[1].Value = obj.iFK_Usuario;
                comando.Parameters[2].Value = obj.cAjusteAplicado;
                comando.Parameters[3].Value = obj.sAjusteObservacion;
                comando.Parameters[4].Value = obj.cAjusteSumar_Inventario;

                comando.ExecuteNonQuery();
            }
            catch (Exception exc)
            {

                throw exc;
            }

        }
        
        public void Ajuste_ExistenciaEliminar(SqlCommand comando, Ajuste_Existencia obj)
        {
            try
            {
                string sp = "usp_Ajuste_ExistenciaEliminar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_Ajuste_Existencia", SqlDbType.Int));
                comando.Parameters[0].Value = obj.iPK_Ajuste_Existencia;


                comando.ExecuteNonQuery();

            }
            catch (Exception e)
            {

                throw e;
            }
        }
      
        public void Ajuste_ExistenciaAplicar(SqlCommand comando, Ajuste_Existencia obj)
        {
            try
            {
                string sp = "usp_Ajuste_ExistenciaAplicar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_Ajuste_Existencia", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Usuario", SqlDbType.Int));
                comando.Parameters[0].Value = obj.iPK_Ajuste_Existencia;
                comando.Parameters[1].Value = obj.iFK_Usuario;


                comando.ExecuteNonQuery();

            }
            catch (Exception e)
            {

                throw e;
            }
        }

        public List<Ajuste_Existencia> Ajuste_ExistenciasConsultar(SqlCommand comando)
        {
            try
            {
                string sp = "usp_Ajuste_ExistenciaConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                var lista = new List<Ajuste_Existencia>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var obj = new Ajuste_Existencia();
                    obj.iPK_Ajuste_Existencia = Convert.ToInt32(dt.Rows[i]["PK_Ajuste_Existencia"]);
                    obj.iFK_Usuario = Convert.ToInt32(dt.Rows[i]["FK_Usuario"]);
                    obj.cAjusteSumar_Inventario = Convert.ToChar(dt.Rows[i]["AjusteSumar_Inventario"]);
                    obj.dAjusteFecha = Convert.ToDateTime(dt.Rows[i]["AjusteFecha"]);
                    obj.cAjusteAplicado = Convert.ToChar(dt.Rows[i]["AjusteAplicado"]);
                    if (!DBNull.Value.Equals(dt.Rows[i]["AjusteFechaAplico"]))
                        obj.dAjusteFechaAplico = Convert.ToDateTime(dt.Rows[i]["AjusteFechaAplico"]);
                    obj.sAjusteObservacion = dt.Rows[i]["AjusteObservacion"].ToString();
                    obj.sULogin = Convert.ToString( dt.Rows[i]["usLogin"]);
                    lista.Add(obj);
                }
                return lista;
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

    }
}